function generateTestSTL(options) {

    const pos = options.pos || [0, 0, 0];
    const posX = pos[0];
    const posY = pos[1];
    const posZ = pos[2];

    function getPos(x, y, z) {

        // Swizzling the XYZ here, because this model is made
        // for +Z as up axis, and xeokit uses +Y for up axis

        return "" + (y + posX) + " " + (z + posY) + " " + (x + posZ);
    }

    return [
        "solid AssimpScene",
        "facet normal 1 0 0",
        "outer loop",
        "vertex " + getPos(13.998, 1.002, 6.998),
        "vertex " + getPos(13.998, 1.002, 16.003),
        "vertex " + getPos(13.998, -7.003, 16.003),
        "endloop",
        "endfacet",

        "facet normal 1 0 0",
        "outer loop",
        "vertex " + getPos(13.998, 1.002, 6.998),
        "vertex " + getPos(13.998, -7.003, 16.003),
        "vertex " + getPos(13.998, -7.003, 6.998),
        "endloop",
        "endfacet",

        "facet normal 0.541477 0 0.840716",
        "outer loop",
        "vertex " + getPos(18, 46, 20),
        "vertex " + getPos(-11.5, 46, 39),
        "vertex " + getPos(-9, -18, 37.39),
        "endloop",
        "endfacet",

        "facet normal 0 -1 0",
        "outer loop",
        "vertex " + getPos(18, 16.003, 0),
        "vertex " + getPos(18, 16.003, 20),
        "vertex " + getPos(17.998, 16.003, 0),
        "endloop",
        "endfacet",

        "facet normal 0 -1 0",
        "outer loop",
        "vertex " + getPos(17.998, 16.003, 20.0013),
        "vertex " + getPos(17.998, 16.003, 0),
        "vertex " + getPos(18, 16.003, 20),
        "endloop",
        "endfacet",

        "facet normal 0 1 0",
        "outer loop",
        "vertex " + getPos(18, 5.998, 20),
        "vertex " + getPos(18, 5.998, 0),
        "vertex " + getPos(17.998, 5.998, 0),
        "endloop",
        "endfacet",

        "facet normal 0 1 0",
        "outer loop",
        "vertex " + getPos(18, 5.998, 20),
        "vertex " + getPos(17.998, 5.998, 0),
        "vertex " + getPos(17.998, 5.998, 20.0013),
        "endloop",
        "endfacet",

        "facet normal 0 -1 0",
        "outer loop",
        "vertex " + getPos(13.998, 1.002, 6.998),
        "vertex " + getPos(18, 1.002, 6.998),
        "vertex " + getPos(13.998, 1.002, 16.003),
        "endloop",
        "endfacet",

        "facet normal 0 -1 0",
        "outer loop",
        "vertex " + getPos(18, 1.002, 16.003),
        "vertex " + getPos(13.998, 1.002, 16.003),
        "vertex " + getPos(18, 1.002, 6.998),
        "endloop",
        "endfacet",

        "facet normal 0 1 0",
        "outer loop",
        "vertex " + getPos(13.998, -7.003, 16.003),
        "vertex " + getPos(18, -7.003, 16.003),
        "vertex " + getPos(18, -7.003, 6.998),
        "endloop",
        "endfacet",

        "facet normal 1 0 0",
        "outer loop",
        "vertex " + getPos(-9, -23, 0),
        "vertex " + getPos(-9, -18, 37.39),
        "vertex " + getPos(-9, -23, 56),
        "endloop",
        "endfacet",

        "facet normal 1 0 0",
        "outer loop",
        "vertex " + getPos(-9, -18, 0),
        "vertex " + getPos(-9, -18, 37.39),
        "vertex " + getPos(-9, -23, 0),
        "endloop",
        "endfacet",

        "facet normal 1 0 0",
        "outer loop",
        "vertex " + getPos(-9, -18, 56),
        "vertex " + getPos(-9, -23, 56),
        "vertex " + getPos(-9, -18, 37.39),
        "endloop",
        "endfacet",

        "facet normal -1 0 0",
        "outer loop",
        "vertex " + getPos(-16, -23, 56),
        "vertex " + getPos(-16, -18, 36.102),
        "vertex " + getPos(-16, -23, 0),
        "endloop",
        "endfacet",

        "facet normal -1 0 0",
        "outer loop",
        "vertex " + getPos(-16, -18, 56),
        "vertex " + getPos(-16, -18, 36.102),
        "vertex " + getPos(-16, -23, 56),
        "endloop",
        "endfacet",

        "facet normal -1 0 0",
        "outer loop",
        "vertex " + getPos(-16, -18, 0),
        "vertex " + getPos(-16, -23, 0),
        "vertex " + getPos(-16, -18, 36.102),
        "endloop",
        "endfacet",

        "facet normal 0 0 1",
        "outer loop",
        "vertex " + getPos(-9, -18, 56),
        "vertex " + getPos(-16, -18, 56),
        "vertex " + getPos(-16, -23, 56),
        "endloop",
        "endfacet",

        "facet normal 0 0 1",
        "outer loop",
        "vertex " + getPos(-9, -18, 56),
        "vertex " + getPos(-16, -23, 56),
        "vertex " + getPos(-9, -23, 56),
        "endloop",
        "endfacet",

        "facet normal 0 1 0",
        "outer loop",
        "vertex " + getPos(-16, -18, 56),
        "vertex " + getPos(-9, -18, 56),
        "vertex " + getPos(-11.5, -18, 39),
        "endloop",
        "endfacet",

        "facet normal 0 1 0",
        "outer loop",
        "vertex " + getPos(-16, -18, 36.102),
        "vertex " + getPos(-16, -18, 56),
        "vertex " + getPos(-11.5, -18, 39),
        "endloop",
        "endfacet",

        "facet normal 0 1 0",
        "outer loop",
        "vertex " + getPos(-9, -18, 37.39),
        "vertex " + getPos(-11.5, -18, 39),
        "vertex " + getPos(-9, -18, 56),
        "endloop",
        "endfacet",

        "facet normal 1 0 0",
        "outer loop",
        "vertex " + getPos(18, -7.003, 16.003),
        "vertex " + getPos(18, -18, 20),
        "vertex " + getPos(18, -7.003, 6.998),
        "endloop",
        "endfacet",

        "facet normal 1 0 0",
        "outer loop",
        "vertex " + getPos(18, 5.998, 0),
        "vertex " + getPos(18, 1.002, 6.998),
        "vertex " + getPos(18, -7.003, 6.998),
        "endloop",
        "endfacet",

        "facet normal 1 0 0",
        "outer loop",
        "vertex " + getPos(18, 5.998, 0),
        "vertex " + getPos(18, -7.003, 6.998),
        "vertex " + getPos(18, -18, 0),
        "endloop",
        "endfacet",

        "facet normal 1 0 0",
        "outer loop",
        "vertex " + getPos(18, 1.002, 16.003),
        "vertex " + getPos(18, 5.998, 20),
        "vertex " + getPos(18, -7.003, 16.003),
        "endloop",
        "endfacet",

        "facet normal 1 0 0",
        "outer loop",
        "vertex " + getPos(18, 1.002, 16.003),
        "vertex " + getPos(18, 1.002, 6.998),
        "vertex " + getPos(18, 5.998, 20),
        "endloop",
        "endfacet",

        "facet normal 1 0 0",
        "outer loop",
        "vertex " + getPos(18, 5.998, 20),
        "vertex " + getPos(18, -18, 20),
        "vertex " + getPos(18, -7.003, 16.003),
        "endloop",
        "endfacet",

        "facet normal 1 0 0",
        "outer loop",
        "vertex " + getPos(18, -18, 0),
        "vertex " + getPos(18, -7.003, 6.998),
        "vertex " + getPos(18, -18, 20),
        "endloop",
        "endfacet",

        "facet normal 0 1 0",
        "outer loop",
        "vertex " + getPos(-41, 46, 20),
        "vertex " + getPos(18, 46, 20),
        "vertex " + getPos(-41, 46, 0),
        "endloop",
        "endfacet",

        "facet normal 0 1 0",
        "outer loop",
        "vertex " + getPos(18, 46, 0),
        "vertex " + getPos(-41, 46, 0),
        "vertex " + getPos(18, 46, 20),
        "endloop",
        "endfacet",

        "facet normal 0 1 0",
        "outer loop",
        "vertex " + getPos(-11.5, 46, 39),
        "vertex " + getPos(18, 46, 20),
        "vertex " + getPos(-41, 46, 20),
        "endloop",
        "endfacet",

        "facet normal -1 0 0",
        "outer loop",
        "vertex " + getPos(-41, -18, 20),
        "vertex " + getPos(-41, 46, 20),
        "vertex " + getPos(-41, 46, 0),
        "endloop",
        "endfacet",

        "facet normal -1 0 0",
        "outer loop",
        "vertex " + getPos(-41, -18, 20),
        "vertex " + getPos(-41, 46, 0),
        "vertex " + getPos(-41, -18, 0),
        "endloop",
        "endfacet",

        "facet normal 0 -1 0",
        "outer loop",
        "vertex " + getPos(-9, -23, 56),
        "vertex " + getPos(-16, -23, 56),
        "vertex " + getPos(-16, -23, 0),
        "endloop",
        "endfacet",

        "facet normal 0 -1 0",
        "outer loop",
        "vertex " + getPos(-9, -23, 56),
        "vertex " + getPos(-16, -23, 0),
        "vertex " + getPos(-9, -23, 0),
        "endloop",
        "endfacet",

        "facet normal 0 0 -1",
        "outer loop",
        "vertex " + getPos(-9, -18, 0),
        "vertex " + getPos(-9, -23, 0),
        "vertex " + getPos(-16, -23, 0),
        "endloop",
        "endfacet",

        "facet normal 0 0 -1",
        "outer loop",
        "vertex " + getPos(-9, -18, 0),
        "vertex " + getPos(-16, -23, 0),
        "vertex " + getPos(-16, -18, 0),
        "endloop",
        "endfacet",

        "facet normal 0 0 -1",
        "outer loop",
        "vertex " + getPos(18, 16.003, 0),
        "vertex " + getPos(17.998, 16.003, 0),
        "vertex " + getPos(18, 46, 0),
        "endloop",
        "endfacet",

        "facet normal 0 0 -1",
        "outer loop",
        "vertex " + getPos(18, 5.998, 0),
        "vertex " + getPos(18, -18, 0),
        "vertex " + getPos(17.998, 5.998, 0),
        "endloop",
        "endfacet",

        "facet normal 0 0 -1",
        "outer loop",
        "vertex " + getPos(18, 46, 0),
        "vertex " + getPos(17.998, 16.003, 0),
        "vertex " + getPos(-41, 46, 0),
        "endloop",
        "endfacet",

        "facet normal 0 0 -1",
        "outer loop",
        "vertex " + getPos(-9, -18, 0),
        "vertex " + getPos(-41, 46, 0),
        "vertex " + getPos(17.998, 5.998, 0),
        "endloop",
        "endfacet",

        "facet normal 0 0 -1",
        "outer loop",
        "vertex " + getPos(18, -18, 0),
        "vertex " + getPos(-9, -18, 0),
        "vertex " + getPos(17.998, 5.998, 0),
        "endloop",
        "endfacet",

        "facet normal 0 0 -1",
        "outer loop",
        "vertex " + getPos(17.998, 16.003, 0),
        "vertex " + getPos(17.998, 5.998, 0),
        "vertex " + getPos(-41, 46, 0),
        "endloop",
        "endfacet",

        "facet normal 0 0 -1",
        "outer loop",
        "vertex " + getPos(-41, 46, 0),
        "vertex " + getPos(-9, -18, 0),
        "vertex " + getPos(-16, -18, 0),
        "endloop",
        "endfacet",

        "facet normal 0 0 -1",
        "outer loop",
        "vertex " + getPos(-41, 46, 0),
        "vertex " + getPos(-16, -18, 0),
        "vertex " + getPos(-41, -18, 0),
        "endloop",
        "endfacet",

        "facet normal 0 0 1",
        "outer loop",
        "vertex " + getPos(18, -7.003, 6.998),
        "vertex " + getPos(18, 1.002, 6.998),
        "vertex " + getPos(13.998, 1.002, 6.998),
        "endloop",
        "endfacet",

        "facet normal 0 0 -1",
        "outer loop",
        "vertex " + getPos(13.998, 1.002, 16.003),
        "vertex " + getPos(18, 1.002, 16.003),
        "vertex " + getPos(18, -7.003, 16.003),
        "endloop",
        "endfacet",

        "facet normal 0 0 -1",
        "outer loop",
        "vertex " + getPos(13.998, 1.002, 16.003),
        "vertex " + getPos(18, -7.003, 16.003),
        "vertex " + getPos(13.998, -7.003, 16.003),
        "endloop",
        "endfacet",

        "facet normal 1 0 0",
        "outer loop",
        "vertex " + getPos(17.998, 16.003, 20.0013),
        "vertex " + getPos(17.998, 5.998, 0),
        "vertex " + getPos(17.998, 16.003, 0),
        "endloop",
        "endfacet",

        "facet normal 1 0 0",
        "outer loop",
        "vertex " + getPos(17.998, 5.998, 20.0013),
        "vertex " + getPos(17.998, 5.998, 0),
        "vertex " + getPos(17.998, 16.003, 20.0013),
        "endloop",
        "endfacet",

        "facet normal 0 1 0",
        "outer loop",
        "vertex " + getPos(13.998, -7.003, 16.003),
        "vertex " + getPos(18, -7.003, 6.998),
        "vertex " + getPos(13.998, -7.003, 6.998),
        "endloop",
        "endfacet",

        "facet normal 0 0 1",
        "outer loop",
        "vertex " + getPos(13.998, 1.002, 6.998),
        "vertex " + getPos(13.998, -7.003, 6.998),
        "vertex " + getPos(18, -7.003, 6.998),
        "endloop",
        "endfacet",

        "facet normal 0 -1 0",
        "outer loop",
        "vertex " + getPos(-9, -18, 37.39),
        "vertex " + getPos(-9, -18, 0),
        "vertex " + getPos(18, -18, 20),
        "endloop",
        "endfacet",

        "facet normal 0 -1 0",
        "outer loop",
        "vertex " + getPos(-9, -18, 0),
        "vertex " + getPos(18, -18, 0),
        "vertex " + getPos(18, -18, 20),
        "endloop",
        "endfacet",

        "facet normal 0 -1 0",
        "outer loop",
        "vertex " + getPos(-41, -18, 0),
        "vertex " + getPos(-16, -18, 0),
        "vertex " + getPos(-41, -18, 20),
        "endloop",
        "endfacet",

        "facet normal 0 -1 0",
        "outer loop",
        "vertex " + getPos(-16, -18, 36.102),
        "vertex " + getPos(-41, -18, 20),
        "vertex " + getPos(-16, -18, 0),
        "endloop",
        "endfacet",

        "facet normal -0.54144 0 0.84074",
        "outer loop",
        "vertex " + getPos(-11.5, -18, 39),
        "vertex " + getPos(-11.5, 46, 39),
        "vertex " + getPos(-16, -18, 36.102),
        "endloop",
        "endfacet",

        "facet normal 1 0 0",
        "outer loop",
        "vertex " + getPos(18, 46, 20),
        "vertex " + getPos(18, 16.003, 20),
        "vertex " + getPos(18, 16.003, 0),
        "endloop",
        "endfacet",

        "facet normal 1 0 0",
        "outer loop",
        "vertex " + getPos(18, 46, 20),
        "vertex " + getPos(18, 16.003, 0),
        "vertex " + getPos(18, 46, 0),
        "endloop",
        "endfacet",

        "facet normal 1 0 0",
        "outer loop",
        "vertex " + getPos(18, 5.998, 0),
        "vertex " + getPos(18, 5.998, 20),
        "vertex " + getPos(18, 1.002, 6.998),
        "endloop",
        "endfacet",

        "facet normal 0.54144 0 0.84074",
        "outer loop",
        "vertex " + getPos(-9, -18, 37.39),
        "vertex " + getPos(-11.5, 46, 39),
        "vertex " + getPos(-11.5, -18, 39),
        "endloop",
        "endfacet",

        "facet normal -0.541477 0 0.840716",
        "outer loop",
        "vertex " + getPos(-41, 46, 20),
        "vertex " + getPos(-16, -18, 36.102),
        "vertex " + getPos(-11.5, 46, 39),
        "endloop",
        "endfacet",

        "facet normal -0.541482 0 0.840713",
        "outer loop",
        "vertex " + getPos(-41, 46, 20),
        "vertex " + getPos(-41, -18, 20),
        "vertex " + getPos(-16, -18, 36.102),
        "endloop",
        "endfacet",

        "facet normal 0.541482 0 0.840713",
        "outer loop",
        "vertex " + getPos(17.998, 16.003, 20.0013),
        "vertex " + getPos(18, 16.003, 20),
        "vertex " + getPos(18, 46, 20),
        "endloop",
        "endfacet",

        "facet normal 0.541482 0 0.840713",
        "outer loop",
        "vertex " + getPos(18, 5.998, 20),
        "vertex " + getPos(17.998, 5.998, 20.0013),
        "vertex " + getPos(18, -18, 20),
        "endloop",
        "endfacet",

        "facet normal 0.541482 0 0.840713",
        "outer loop",
        "vertex " + getPos(17.998, 16.003, 20.0013),
        "vertex " + getPos(-9, -18, 37.39),
        "vertex " + getPos(17.998, 5.998, 20.0013),
        "endloop",
        "endfacet",

        "facet normal 0.541482 0 0.840713",
        "outer loop",
        "vertex " + getPos(18, 46, 20),
        "vertex " + getPos(-9, -18, 37.39),
        "vertex " + getPos(17.998, 16.003, 20.0013),
        "endloop",
        "endfacet",

        "facet normal 0.541482 0 0.840713",
        "outer loop",
        "vertex " + getPos(18, -18, 20),
        "vertex " + getPos(17.998, 5.998, 20.0013),
        "vertex " + getPos(-9, -18, 37.39),
        "endloop",
        "endfacet",

        "endsolid AssimpScene"
    ].join("\n");
}

export {generateTestSTL};